default value expressions | 您所在的位置:网站首页 › default t › default value expressions |
default value expressions - produce the default value
Article
12/29/2022
2 minutes to read
A default value expression produces the default value of a type. There are two kinds of default value expressions: the default operator call and a default literal. You also use the default keyword as the default case label within a switch statement. default operatorThe argument to the default operator must be the name of a type or a type parameter, as the following example shows: Console.WriteLine(default(int)); // output: 0 Console.WriteLine(default(object) is null); // output: True void DisplayDefaultOf() { var val = default(T); Console.WriteLine($"Default value of {typeof(T)} is {(val == null ? "null" : val.ToString())}."); } DisplayDefaultOf(); DisplayDefaultOf(); DisplayDefaultOf(); // Output: // Default value of System.Nullable`1[System.Int32] is null. // Default value of System.Numerics.Complex is (0, 0). // Default value of System.Collections.Generic.List`1[System.Int32] is null. default literalYou can use the default literal to produce the default value of a type when the compiler can infer the expression type. The default literal expression produces the same value as the default(T) expression where T is the inferred type. You can use the default literal in any of the following cases: In the assignment or initialization of a variable. In the declaration of the default value for an optional method parameter. In a method call to provide an argument value. In a return statement or as an expression in an expression-bodied member.The following example shows the usage of the default literal: T[] InitializeArray(int length, T initialValue = default) { if (length < 0) { throw new ArgumentOutOfRangeException(nameof(length), "Array length must be nonnegative."); } var array = new T[length]; for (var i = 0; i < length; i++) { array[i] = initialValue; } return array; } void Display(T[] values) => Console.WriteLine($"[ {string.Join(", ", values)} ]"); Display(InitializeArray(3)); // output: [ 0, 0, 0 ] Display(InitializeArray(4, default)); // output: [ False, False, False, False ] System.Numerics.Complex fillValue = default; Display(InitializeArray(3, fillValue)); // output: [ (0, 0), (0, 0), (0, 0) ]Tip Use .NET style rule IDE0034 to specify a preference on the use of the default literal in your codebase. C# language specificationFor more information, see the Default value expressions section of the C# language specification. See also C# reference C# operators and expressions Default values of C# types Generics in .NET |
CopyRight 2018-2019 实验室设备网 版权所有 |